package com.ruoyi.common.datasource;


import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;


@Component
public class TableExistsChecker {

    private final JdbcTemplate jdbcTemplate;

    // 注入JdbcTemplate（Spring Boot自动配置）
    public TableExistsChecker(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    /**
     * 判断指定表是否存在
     * @param tableName 表名（如"table_record"）
     * @return 存在返回true，否则返回false
     */
    public boolean isTableExists(String tableName, String dbName) {
        return jdbcTemplate.execute((Connection connection) -> {
            try {
                DatabaseMetaData metaData = connection.getMetaData();
                try (ResultSet rs = metaData.getTables(
                        dbName,  // 直接传入数据库名
                        null,
                        tableName,
                        new String[]{"TABLE"}
                )) {
                    return rs.next();
                }
            } catch (SQLException e) {
                throw new RuntimeException("查询表是否存在失败", e);
            }
        });
    }
}